package edu.upc.clase.demo.controller;

//import edu.upc.clase.demo.entity.Credential;
import edu.upc.clase.demo.entity.*;
import edu.upc.clase.demo.service.LocalService;
import edu.upc.clase.demo.service.UbigeoService;
import edu.upc.clase.demo.service.CanchaService;

import edu.upc.clase.demo.entity.CanchaHorario;
import edu.upc.clase.demo.entity.CanchaHorarioForm;
import edu.upc.clase.demo.entity.Dia;
import edu.upc.clase.demo.entity.Hora;
import edu.upc.clase.demo.service.CanchaHorarioService;
import edu.upc.clase.demo.service.DiaService;
import edu.upc.clase.demo.service.HoraService;
import java.util.ArrayList;


import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author Six-Group-Upc
 */
@Controller("ReservaController")
public class ReservaController {

    @Autowired
    private LocalService localService;
    @Autowired
    private UbigeoService ubigeoService;
    @Autowired    
    private CanchaService canchaService;
    
    
    @Autowired
    private CanchaHorarioService canchaHorarioService;
    @Autowired
    private DiaService diaService;
    @Autowired       
    private HoraService horaService;        
    
    
    private static List<CanchaHorario> canchasHorarios = new ArrayList<CanchaHorario>();
     
    
        private void LlenarLista(int codCancha) {
        canchasHorarios.clear();
        //TarifaDia-TarifaNoche-Turno-CodigoDia-CodigoHora-Activo-CodigoCancha
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 1, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 2, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 3, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 4, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 5, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 6, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 7, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 8, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 9, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 10, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 11, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 12, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 13, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 14, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 1, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 2, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 3, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 4, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 5, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 6, 15, 1, codCancha));
        canchasHorarios.add(new CanchaHorario(30.00, 40.00, 1, 7, 15, 1, codCancha));


    }
    private static Logger log = LoggerFactory.getLogger(LocalController.class);
    @RequestMapping("/reservas/listLocales")
    public ModelAndView listLocales() {
        ModelAndView mav = new ModelAndView("reservas/listLocales");
        List<Local> locales = localService.buscarTodos();
        mav.addObject("locales", locales);
        return mav;
    }
    @RequestMapping(value ="/reservas/viewReservas", method = RequestMethod.GET)
    public ModelAndView viewReservas() {
        ModelAndView mav = new ModelAndView("reservas/viewReservas");
        List<Cancha> canchas = canchaService.listarReservar();
        mav.addObject("canchas", canchas);
        return mav;
    }
    @RequestMapping(value = "/reservas/detailLocales", method = RequestMethod.GET)
    public ModelAndView detailLocales(@RequestParam("id") Integer id) {
        ModelAndView mav = new ModelAndView("reservas/detailLocales");
        List<Cancha> canchas = canchaService.buscarXLocal(id);
        mav.addObject("canchas", canchas);
        return mav;
    }
    
 @RequestMapping(value = "/reservas/horarioReserva", method = RequestMethod.GET)
    public ModelAndView index(@RequestParam("id") Integer id) {
        ModelAndView mav = new ModelAndView("reservas/horarioReserva");
       
        //Listado de Horarios de Canchas
        List<CanchaHorario> canchasHorariosBD = canchaHorarioService.buscar(id);
        mav.addObject("canchasHorarios", canchasHorarios);

        CanchaHorarioForm canchaHorarioForm = new CanchaHorarioForm();


        if (canchasHorariosBD.size() > 0) {

            canchaHorarioForm.setCanchasHorarios(canchasHorariosBD);
        } else {
            LlenarLista(id);

            //CanchaHorarioForm canchaHorarioForm = new CanchaHorarioForm();
            canchaHorarioForm.setCanchasHorarios(canchasHorarios);
        }

        Cancha cancha = canchaService.buscar(id);
        //mav.addObject("cancha", cancha);
        mav.getModelMap().put("cancha", cancha);
        
        List<Dia> dias = diaService.buscarTodos();
        mav.addObject("dias", dias);

        List<Hora> horas = horaService.buscarTodos();
        mav.addObject("horas", horas);

        mav.addObject("canchasHorariosBD", canchasHorariosBD);

        mav.addObject("canchaHorarioForm", canchaHorarioForm);
        return mav;
    }
    @RequestMapping(value="/reservas/horarioReserva", method=RequestMethod.POST)
    public String reservar(@ModelAttribute("cancha") Cancha cancha, SessionStatus status) {
        canchaService.reservar(cancha);
        status.setComplete();
        return "redirect:/pages/reservas/listLocales";
    }
//    @RequestMapping(value = "/locales/new", method = RequestMethod.GET)
//    public ModelAndView newLocal() {
//        ModelAndView mav = new ModelAndView("locales/new");
//        Local local = new Local();
//        mav.getModelMap().put("local", local);
//
//        List<Ubigeo> ubigeos = ubigeoService.buscarTodos();
//        mav.addObject("ubigeos", ubigeos);
//
//        return mav;
//    }

//    @RequestMapping(value = "/locales/new", method = RequestMethod.POST)
//    public String createLocal(@ModelAttribute("local") Local local, SessionStatus status) {
//        localService.insertar(local);
//        status.setComplete();
//
//        return "redirect:/pages/locales/index";
//
//    }



//    @RequestMapping(value = "/locales/edit", method = RequestMethod.POST)
//    public String update(@ModelAttribute("local") Local local, SessionStatus status) {
//        localService.actualizar(local);
//        status.setComplete();
//        return "redirect:/pages/locales/index";
//    }

//    @RequestMapping("/locales/delete")
//    public ModelAndView delete(@RequestParam("id") Integer id) {
//        ModelAndView mav = new ModelAndView("redirect:/pages/locales/index");
//        Local local = localService.buscar(id);
//        localService.eliminar(local);
//        return mav;
//    }
}
